package routes

import (
	"github.com/gin-gonic/gin"
	"my-systems/pet-system/internal/api/v1/luckFoster"
	"my-systems/pet-system/internal/api/v1/luckPet"
	luckUser "my-systems/pet-system/internal/api/v1/luckUser"
	"my-systems/pet-system/internal/middleware"
	"net/http"
)

func SetupRoutes() *gin.Engine {
	r := gin.Default()
	r.StaticFS("/static", http.Dir("./pet-system/static"))
	r.Use(middleware.CorsMiddle())
	pet := r.Group("/pets/v1")

	{
		/* 公共路由 */
		// 用户模块
		pet.POST("login-user-sql", luckUser.LoginUser)       // 登录
		pet.POST("register-user-sql", luckUser.RegisterUser) // 注册
		// 宠物模块
		pet.GET("get-sale-pets", luckPet.GetSalePets)   // 展示可售宠物列表
		pet.GET("get-sale-pet/:id", luckPet.GetSalePet) // 获取可售宠物详情
		// 宠物商品模块
		//pet.POST("get-pet-products", petProduct.GetPetProduct)    // 展示宠物商品列表
		//pet.GET("get-pet-product/:id", petProduct.GetProductByID) // 获取宠物商品详情

		// 私有路由-会员权限
		private := pet.Group("/")
		private.Use(middleware.JWT()) // JWT 中间件
		{
			//用户模块：用户注册、登录、信息管理。
			private.POST("update-user-sql", luckUser.UpdateUser) // 更新用户信息--> 昵称、手机号、地址、性别、生日
			private.POST("upAvatar-user-sql", luckUser.UpAvatar) // 更新用户头像
			private.POST("recharge", luckUser.Recharge)          // 会员金额充值
			private.GET("cat-money", luckUser.CatMoney)          // 会员金额查询
			private.GET("out-login", luckUser.OutLogin)          // 退出登录

			//宠物模块：宠物信息登记、管理。
			private.POST("add-pet", luckPet.AddPet)            // 注册会员名下宠物
			private.POST("update-pet", luckPet.UpdatePet)      // 更新宠物信息，如昵称、品种、年龄、体重、健康情况等。
			private.POST("delete-pet", luckPet.DeletePet)      // 注销会员名下宠物信息。
			private.GET("cat-user-pet", luckPet.CatPet)        // 查看用户宠物列表
			private.POST("up-pet-avatar", luckPet.UpPetAvatar) // 更新宠物头像

			//寄养模块：寄养预约、寄养状态管理。
			private.POST("add-foster", luckFoster.AddFoster)              // 预约寄养
			private.POST("update-foster", luckFoster.UpdateFoster)        // 更新寄养信息，如寄养时间、寄养地点等。
			private.GET("get-fosters", luckFoster.GetFosters)             // 获取所有宠物寄养信息，包括预约状态、寄养时间、寄养地点等。
			private.GET("get-foster/:id", luckFoster.GetFosterByID)       // 获取指定宠物寄养信息，包括预约状态、寄养时间、寄养地点等。
			private.DELETE("end-foster/:id", luckFoster.DeleteFosterByID) // 结束寄养。

			//领养模块：领养申请、审核流程。
			//private.POST("add-adopt", luckAdopt.AddAdopt)       // 提交领养申请
			//private.POST("update-adopt", luckAdopt.UpdateAdopt) // 更新领养申请信息，如联系方式、领养时间等。
			//private.POST("delete-adopt", luckAdopt.DeleteAdopt) // 取消领养申请。
			//private.POST("get-adopts", luckAdopt.GetAdopts)     // 获取所有宠物领养申请信息，包括联系方式、领养时间等。
			//private.POST("get-adopt/:id", luckAdopt.GetAdopt)   // 获取指定宠物领养申请信息，包括联系方式、领养时间等。

			//服务模块：宠物服务（如美容、医疗）预约。

			//商品模块：商品展示、购买、订单管理。

			//订单模块：订单创建、支付、取消、查询。

			//购物车模块：添加、删除、查看购物车。
		}
	}
	return r
}
